The present invention relates to a system and method for caching and retrieving information such as Internet data, More specifically, the present invention relates to such a system and method for increasing system efficiency by periodically caching frequently requested information such that the information need not be reconstructed in response to each request therefor.
A system that delivers electronic information to a requester upon request therefrom is known. As but one example, an Internet content provider delivers Internet information to an Internet user upon request therefromxe2x80x94that is, when the user xe2x80x98visits the sitexe2x80x99 of such content provider. Such Internet content providers are, of course, ubiquitous in this day and age. In such an Internet system, in particular, a requester has a computing device and an appropriate Internet connection with the content provider, and thus sends an HTTP request for the information to the content provider at an Internet web site. The provider responds to the HTTP request by constructing an HTML web page having the requested information and returning such HTML page to the requester. Such HTML page may of course then be rendered by way of an appropriate browsing device on the computing device of the requester.
Types of content providers that provide such information are many and varied. In one type of particular interest, the content provider presents a page of general information to the user. For example, a user visiting a site such as www.msn.comxe2x80x94the MICROSOFT NETWORK home web, an Internet-based product of MICROSOFT Corporation of Redmond, Wash.xe2x80x94is automatically presented with a variety of information including: news articles, a search engine, advertisers, weather information, sports information, map information, telephone directories, financial information, and/or the like; and/or links to news articles, a search engine, advertisers, weather information, sports information, map information, telephone directories, financial information, and/or the like.
Typically, such a site such as an Internet site is implemented by way of one or more servers appropriately coupled to the a network such as the Internet for responding to the aforementioned user requests. In particular, each server is provided with all information necessary to construct the requested page. Thus, in response to a particular request, the server does so construct the requested page with the provided information and then communicates the constructed page to the requesting user. Typically, the provided information is updated from external sources on a timely and/or regular basis, which may be on the order of every 15 seconds, every 15 minutes, or the like, depending on the type of information and other factors.
Importantly, because the provided information may have been updated since a previous request was serviced, the server preferably newly construct the page for each and every received request in order that the constructed page has the latest, newest, and/or most current information. As should be understood, the server typically constructs the page according to a pre-defined script.
Of course, if the page is served by the server many times before information therein is updated (for example, 10 times per second), the process becomes inefficient in that the exact same page is being constructed multiple times. Accordingly, a need exists for a system and method that caches such a page in a manner such that the process of page construction by the server is more efficient, while at the same time ensures that the information in the constructed and cached page is current.
As should be appreciated, in some situations the aforementioned server constructs different variations of the page depending on who the user is and/or what hardware and/or software the user is employing in connection with the computing device thereof, among other things. In one case, the user may have pre-defined information that is to appear in the constructed page, such predefined information for example being specified in a xe2x80x98cookiexe2x80x99 or the like sent with the page request. As an example, the user may have requested that the constructed page as provided by the server include local weather and stock quotes for particular stocks. In another case, the user may be employing a computing device having a particular browser, a particular processor, a particular graphics card, etc., such particulars for example being specified in a user agent string sent with the page request. While perhaps not absolutely necessary, such user agent string information may be employed by the server during page construction to customize the constructed page for rendering on the user""s computer device.
Accordingly, in the aforementioned cases and perhaps others, the server constructing the page in response to a page request could conceivably construct many variations of the served page, with the result being that the relative efficiency is higher. Nevertheless, there are at least some variations of the served page that are constructed frequently enough to merit caching. Thus, a need exists for a system and method that caches multiple page variations in a manner such that the process of page construction by the server is more efficient, while at the same time ensures that the information in the constructed and cached pages are current.
In the present invention a system for caching and retrieving information comprises a server having an information repository, a cache manager, and a server software module. The information repository receives and stores data that is to be served by the server, where such data is regularly updated from at least one external source. The server software module performs server functions including responding to at least some requests for a document from a requestor by retrieving data currently stored in the repository, rendering the document to include the retrieved data, and forwarding the rendered document to the requestor. The cache manager requests a document from the server software module, receives the requested document as rendered by the server software module to include the retrieved data currently stored in the repository, and caches the received document on a regular basis. The cached document is expected to be requested by a user. The server software module responds to such a request by retrieving the cached document and forwarding the retrieved cache document to the user.